package com.xbongbong.paas.service;

import com.xbongbong.paas.pojo.ChartCategoryDTO;
import com.xbongbong.paas.pojo.ChartSaveRuleDTO;
import com.xbongbong.paas.pojo.dto.ChartSetDetailDTO;
import com.xbongbong.paas.pojo.dto.ChartSetEnableDTO;
import com.xbongbong.paas.pojo.dto.ChartSetSaveDTO;
import com.xbongbong.paas.pojo.vo.ChartSaveRuleVO;
import com.xbongbong.paas.pojo.vo.ChartSetVO;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.BaseDTO;
import com.xbongbong.paas.toolbox.wrap.XbbResponse;
import com.xbongbong.pro.domain.entity.ChartCategoryEntity;
import com.xbongbong.pro.domain.entity.ChartEntity;

import java.util.List;

/**
 * @author youli.chen
 * @ProjectName xbb-pro
 * @Description: TODO
 * @date 2019/1/21 10:50
 */
public interface PkSetService {

    /**
     * 【web】获取PK榜设置
     * @param chartSetDetailDTO
     * @return
     * @throws XbbException
     */
    XbbResponse<ChartSetVO> getChartSet(ChartSetDetailDTO chartSetDetailDTO) throws XbbException;

    /**
     * 【web】启用/关闭pk榜指标
     * @param chartSetEnableDTO
     * @return
     * @throws XbbException
     */
    XbbResponse<Integer> chartSetEnable(ChartSetEnableDTO chartSetEnableDTO) throws XbbException;

    /**
     * 【web】保存指标名称
     * @param chartSetSaveDTO
     * @return
     * @throws XbbException
     */
    XbbResponse<Integer> saveName(ChartSetSaveDTO chartSetSaveDTO) throws XbbException;

    /**
     * 【web】保存PK榜设置
     * @param chartSaveRuleDTO
     * @return
     * @throws XbbException
     */
    XbbResponse<ChartSaveRuleVO> saveRule(ChartSaveRuleDTO chartSaveRuleDTO) throws XbbException;

    /**
     * 设置分类的开启/关闭
     * @param baseDTO
     * @param chartEntity
     * @throws XbbException
     * @author xinpeng.jiang
     * @date 2022/4/19 13:48
     * @version 1.0
     */
    void setCategoryEnable(BaseDTO baseDTO, ChartEntity chartEntity) throws XbbException;

    /**
     * 获取分类，排除了一些特定分类
     * @param chartCategoryDTO
     * @return java.util.List<com.xbongbong.pro.domain.entity.ChartCategoryEntity>
     * @throws XbbException
     * @author xinpeng.jiang
     * @date 2021/5/13 17:19
     * @version 1.0
     */
    List<ChartCategoryEntity> getAllCategoryList(ChartCategoryDTO chartCategoryDTO) throws XbbException;

}
